// 版权归Epic Games, Inc.所有。保留所有权利。

#pragma once

#include "EnhancedPlayerInput.h"

#include "LyraPlayerInput.generated.h"

/**
 * Lyra的自定义玩家输入类。这扩展了增强输入的功能，还包括
 * 按键时的一些输入延迟跟踪。
 *
 * 如果您有任何与按键或刷新输入相关的特殊逻辑想要运行，请扩展此类。
 */
UCLASS(config = Input, transient)
class ULyraPlayerInput : public UEnhancedPlayerInput
{
	GENERATED_BODY()

public:
	ULyraPlayerInput();
	virtual ~ULyraPlayerInput() override;

protected:
	//~ Begin UEnhancedPlayerInput Interface
	virtual bool InputKey(const FInputKeyEventArgs& Params) override;
	//~ End of UEnhancedPlayerInput interface

	/**
	 * 处理输入事件的延迟标记
	 * @param Params 输入键事件参数
	 */
	void ProcessInputEventForLatencyMarker(const FInputKeyEventArgs& Params);
	/**
	 * 绑定到延迟标记设置更改
	 */
	void BindToLatencyMarkerSettingChange();
	/**
	 * 解绑延迟标记设置更改监听器
	 */
	void UnbindLatencyMarkerSettingChangeListener();
	/**
	 * 处理延迟标记设置更改
	 */
	void HandleLatencyMarkerSettingChanged();

	bool bShouldTriggerLatencyFlash = false; // 是否应触发延迟闪烁
};